/**
 * 
 */
package br.com.fiolaserdao.facade.facadeimpl.bo.boimpl.dao.daoimpl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import br.com.fiolaserdao.conexao.Conexao;
import br.com.fiolaserdao.dto.DepoimentoDTO;
import br.com.fiolaserdao.facade.facadeimpl.bo.boimpl.dao.IDepoimentoDAO;
/**
 * @author Narciso Martins
 *
 */

class DepoimentoDAO implements IDepoimentoDAO {
	
	
	public void  excluir(DepoimentoDTO object) throws SQLException 
	{
		
		try 
		{
			PreparedStatement pstmt;
			String query=" DELETE FROM DEPOIMENTO WHERE CODIGO = ? ";
			pstmt = Conexao.getInstancia().getConn().prepareStatement(query);
			
	        pstmt.setInt(1,object.getCodigo());
	        pstmt.execute();
		} catch (Exception e) 
		{
			throw new SQLException(e);
		}
        
	}

	/* (non-Javadoc)
	 * @see br.com.fiolaserdao.facade.facadeimpl.bo.boimpl.dao.DaoGeneric#inserir(java.lang.Object)
	 */
	public void inserir(DepoimentoDTO object) throws SQLException {
		
		try 
		{
			PreparedStatement pstmt;
			String query;
			query=" INSERT INTO DEPOIMENTO(ATIVO,DESCRICAO,IMAGEPATH,TEXTO) VALUES(?,?,?,?) ";
			pstmt = Conexao.getInstancia().getConn().prepareStatement(query);
			
			pstmt.setBoolean(1,object.getAtivo());
			pstmt.setString(2,object.getDescricao());
			pstmt.setString(3,object.getImagePath());
			pstmt.setString(4,object.getTexto() );			
	        pstmt.execute();
			
		} catch (Exception e) 
		{
			throw new SQLException(e);
		}
	        
	}

	/* (non-Javadoc)
	 * @see br.com.fiolaserdao.facade.facadeimpl.bo.boimpl.dao.DaoGeneric#obterPorFiltro(java.lang.Object)
	 */
	
	public Collection<DepoimentoDTO> obterPorFiltro(DepoimentoDTO object) throws SQLException 
	{
		try 
		{
			Collection<DepoimentoDTO> depoimentos = new ArrayList<DepoimentoDTO>();
			DepoimentoDTO depoimentoDTO = null;
			
			PreparedStatement pstmt;
			StringBuilder query = new StringBuilder();
			query.append(" SELECT * FROM DEPOIMENTO ");
			query.append(" WHERE 1 = 1 ");
						
			if(!"".equals(object.getDescricao()) && !"".equals(object.getDescricao().trim())){
				query.append(" AND UPPER(DESCRICAO) LIKE '"+object.getDescricao().toUpperCase()+"%' ");
			}
			
			if(!object.getTexto().equals("") && !object.getTexto().trim().equals("")){
				query.append(" AND UPPER(TEXTO) LIKE '"+object.getTexto().toUpperCase()+"%' ");
			}
			
			query.append(" ORDER BY DESCRICAO ");
			
			pstmt = Conexao.getInstancia().getConn().prepareStatement(query.toString());
		
			ResultSet rs =pstmt.executeQuery();
			while(rs.next())
			{
				depoimentoDTO = new DepoimentoDTO();
				depoimentoDTO.setAtivo(rs.getBoolean("ATIVO"));
				depoimentoDTO.setCodigo(rs.getInt("CODIGO"));
				depoimentoDTO.setDescricao(rs.getString("DESCRICAO"));
				depoimentoDTO.setImagePath(rs.getString("IMAGEPATH"));
				depoimentoDTO.setTexto(rs.getString("TEXTO"));
				depoimentos.add(depoimentoDTO);
			}
		        
			return depoimentos;
			
		} catch (Exception e) 
		{
			throw new SQLException(e);
		}
	}

	/* (non-Javadoc)
	 * @see br.com.fiolaserdao.facade.facadeimpl.bo.boimpl.dao.DaoGeneric#update(java.lang.Object)
	 */
	
	public void update(DepoimentoDTO object) throws SQLException 
	{
		
			PreparedStatement pstmt;
			String query;
			query=" UPDATE depoimento SET ATIVO=?,DESCRICAO=?,IMAGEPATH=?,TEXTO=? WHERE CODIGO = ? ";
			pstmt = Conexao.getInstancia().getConn().prepareStatement(query);
			
			pstmt.setBoolean(1,object.getAtivo());
			pstmt.setString(2,object.getDescricao());
			pstmt.setString(3,object.getImagePath());
			pstmt.setString(4,object.getTexto() );
			pstmt.setInt(5,object.getCodigo());
	        pstmt.execute();
	}

}
